package scales.utils import scalaz.Equal /** * Provides evidence that two instances of two disctinct types are equivalent after a conversion. * Requires an instance of Equal for the common convertable type. * * @author Derek Williams */ class Equiv[A : Equal] { def apply[ B <% A, C <% A]( b : B , c : C) : Boolean = implicitly[Equal[A]].equal(b:A, c:A) } trait EquivFunctions { /** * Are these two parameters (convertable to a C) equal for a given Equiv[C] instance */ def equivalent[A, B, C]( a : A, b : B)(implicit equiv: Equiv[C], viewA: A => C, viewB: B => C) = equiv(a, b) }
<iframe src="https://scalesxml.github.io/scales-xml_2.10/0.5.0/api.sxr/scales/utils/Equiv.scala.html" width="1280" height="720" frameborder="0"> </iframe>